home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
c
/
cxref_1_4a.lha
/
cxref-cc
< prev
next >
Wrap
Text File
|
1997-06-22
|
3KB
|
134 lines
#!/bin/sh
# $Header: /home/amb/cxref/RCS/cxref-cc 1.1 1997/06/22 10:04:59 amb Exp $
#
# C Cross Referencing & Documentation tool. Version 1.4.
#
# C compiler replacement to compile program and cross reference it.
#
# Written by Andrew M. Bishop
#
# This file Copyright 1997 Andrew M. Bishop
# It may be distributed under the GNU Public License, version 2, or
# any higher version. See section COPYING of the GNU Public license
# for conditions under which this file may be redistributed.
#
# Print a usage statement.
if [ $# = 0 ]; then
echo 'Usage: cxref-cc filename [CC-arguments]'
echo ''
echo 'filename : The name of the file to compile and cross reference.'
echo 'CC-arguments : Any number of arguments to the C compiler.'
echo ''
echo 'The C compiler is called first, and if this succeeds then cxref is called.'
echo 'You require a .cxref file to contain the cxref options.'
exit 1
fi
# Check for a .cxref file.
if [ ! -r .cxref ]; then
echo 'cxref-cc: Error a .cxref file is required to use cxref-cc.'
echo ' If you do not need any arguments an empty file will work.'
exit 1
fi
# The variables that we are going to use.
if [ "x$CXREFCC" = x ]; then
if [ "x$CC" = x ]; then
CXREFCC=gcc
else
CXREFCC=`echo $CC | cut -d' ' -f1`
if [ `basename $CXREFCC` = cxref-cc ]; then
echo 'cxref-cc: Warning the CC variable points to cxref-cc, set CXREFCC instead.'
CXREFCC=gcc
fi
fi
fi
CXREF=cxref
FILE=
CXREFFLAGS=
# Call the C compiler
$CXREFCC "$@"
if [ ! $? = 0 ]; then
echo 'cxref-cc: The C compiler failed with an error status.'
exit 1
fi
# Loop over the arguments and sort them out.
# Note: Need to be careful because "-DFOO=BAR BAR" loses its quotes on parameter
# expansion, but must be passed to cxref as a single word. We need to use
# a word separator since there are no arrays, so we use ^M.
while [ ! $# = 0 ]; do
case $1 in
# The arguments to keep
-D)
CXREFFLAGS="$CXREFFLAGS$1$2"; shift;;
-D*)
CXREFFLAGS="$CXREFFLAGS$1";;
-U)
CXREFFLAGS="$CXREFFLAGS$1$2"; shift;;
-U*)
CXREFFLAGS="$CXREFFLAGS$1";;
-I)
CXREFFLAGS="$CXREFFLAGS$1$2"; shift;;
-I*)
CXREFFLAGS="$CXREFFLAGS$1";;
# The filename (perhaps)
*.c)
if [ "x$FILE" = x -a -r $1 ]; then
FILE=$1;
fi;;
# The arguments to throw away
*)
;;
esac
shift
done
# Check that a file was specified
if [ "x$FILE" = x ]; then
echo 'cxref-cc : Warning no file specified on the command line'
exit 0
fi
# Call cxref
# Note: We are using ^M as the word separator, as detailed above.
IFS=
export IFS
$CXREF$FILE$CXREFFLAGS